package com.example.springbootoauth2.dao;

import java.util.List;

import com.example.springbootoauth2.model.user.pojo.Resource;
import com.example.springbootoauth2.model.user.pojo.Role;
import com.example.springbootoauth2.model.user.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

public interface UserDao {

	/**
	 * 添加用户
	 * 
	 * @param user
	 * @return
	 */
	int insertUser(User user);

	/**
	 * 根据ID批量修改用户状态
	 * 
	 * @param idList
	 * @param status
	 * @return
	 */
	int updateUserStatus(@Param("idList") List<Integer> idList, @Param("status") Integer status);

	/**
	 * 根据ID批量删除用户
	 * 
	 * @param idList
	 * @return
	 */
	int deleteUser(List<Integer> idList);

	/**
	 * 根据ID获取用户所有信息
	 * 
	 * @param userId
	 * @return
	 */
	User queryUserById(Integer userId);

	/**
	 * @Author Firmye
	 * @Date 2017年12月7日 上午12:36:30
	 *
	 * @Description 根据用户名查找用户
	 */
	User queryUserByUsername(String username);

	/**
	 * @Author Firmye
	 * @Date 2017年12月7日 上午12:39:51
	 *
	 * @Description 根据用户ID获取角色
	 */
	List<Role> queryRolesByUserId(Integer userId);

	/**
	 * @Author Firmye
	 * @Date 2017年12月7日 上午1:01:58
	 *
	 * @Description 获取所有角色信息
	 */
	List<Role> queryAllRole();

	/**
	 * @Author Firmye
	 * @Date 2017年12月7日 上午1:06:56
	 *
	 * @Description 根据角色ID获取权限
	 */
	List<Resource> queryResoursesByRoleId(Integer roleId);

}
